<?php
namespace Tbf\Component\DateTime;
use \DateTime as BaseDateTime;
/**
* 表示一个时间点,注意这个类有时区(默认服务器时区)
* 创建方法
* fromMysql
*
*/
class DateTime extends BaseDateTime
{
    /**
    * 从mysql格式时间生成本类
    */
    public static function fromMysql($datetime)
    {
        return new static($datetime);
    }
    /**
    * 当前时间点
    */
    public static function now()
    {
        return new static();
    }
    /**
    * 从今天的时间生成本类
    */
    public static function todayFromMysqlTime($time)
    {
        $now = self::now();
        $today = $now->toMysqlDate();

        return self::fromMysql($today.' '.$time);
    }

    /**
    * 获取当前这个类的时间点是否在$b的后面
    * 返回true和false
    */
    public function after(DateTime $b)
    {
        return $this>$b;
    }
    /**
    * mysql的那个格式
    * 2013-02-22 08:15:15
    */
    public function toMysql()
    {
        return $this->format('Y-m-d H:i:s');
    }
    public function toUnix()
    {
        $data = $this->format('U');

        return $data;
    }
    /**
    * 返回日期
    */
    public function toMysqlDate()
    {
        return $this->format('Y-m-d');
    }
    public function toMysqlTime()
    {
        return $this->format('H:i:s');
    }

    /**
    * 返回这一天开始的时间点
    */
    public function DayStart()
    {
        $string = $this->format('Y-m-d').' 00:00:00';

        return self::fromMysql($string);
    }
    /**
    * 返回这一天结束的时间点
    */
    public function DayEnd()
    {
        $string = $this->format('Y-m-d').' 24:59:59';
        $datetime = self::fromMysql($string);

        return $datetime;
    }
}
